// 三数之和
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
 var threeSum = function(nums) {
    let n = nums.length;
    let ans = [];
    nums = nums.sort((a,b) => a-b);
    if(nums == null || n < 3) return ans;
    //console.log(nums)
    for(let i = 0 ;i < n;i++) {
        if(nums[i] > 0) break; // 如果当前数字大于0，则三数之和一定大于0，所以结束循环
            if(i > 0 && nums[i] == nums[i-1]) continue; // 去重
            let l = i+1;
            let r = n-1;
            while(l<r) {
        if(nums[l]+nums[i]+nums[r]==0) {
        ans.push([nums[l],nums[i],nums[r]]);
        while(l<r && nums[l]==nums[l+1]) l++;
        while(l<r && nums[r]==nums[r-1]) r--;
        l++;
        r--;
        }
        else if(nums[l]+nums[i]+nums[r]<0)
        {
            l++;
        }
        else {
            r--;
        }
    }
    }
    return ans;
};
console.log(threeSum([-1,1,0,1,-1,0]))